#ifndef TABLA_H
#define TABLA_H

#include <string>
#include <vector>
#include <fstream>
#include <sstream>

#include "oszlop.h"
#include "funktor.h"

class Tabla
{
	bool _ures;
	std::fstream _f;
	std::string _fajlnev;
public:
	std::string _nev;
	int _oszlopok_szama, _sorok_szama;
	std::vector<Oszlop_base*> _oszlopok;
	enum Exceptions { SOR_MERETE_NEM_MEGFELELO };
	Tabla(const std::string& s);
	~Tabla();
	void Modosit_felvetel(const std::string& nev, const std::string& tip);
	void Modosit_felvetel(const std::string& nev, const std::string& tip, const std::string& ertekek);
	void Beszur(const std::string& s);
	std::string Listaz();
	void Szurt_listaz(Funktor f, const int& o);
	void Torol(Funktor f, const int& o);
	void Urit();
	std::string Nev() { return _nev; }
	void Be_fajl(std::string& elso_sor, std::stringstream& tobbi, const std::fstream& mibol);
	void Ki_fajl(const std::string& elso_sor, const std::stringstream& tobbi, std::fstream& hova);
};

#endif